using UniversalAdmin.Application.Dtos.Role;
using UniversalAdmin.Application.Dtos;

namespace UniversalAdmin.Application.Services.Interfaces;

public interface IRoleService
{
    Task<dynamic> GetAllRolesAsync(PageRequestDto pageRequestDto);

    Task<dynamic> GetRoleByIdAsync(Guid roleId);

    Task<dynamic> CreateRoleAsync(CreateRoleDto createRoleDto);

    Task<dynamic> UpdateRoleAsync(Guid roleId, UpdateRoleDto updateRoleDto);

    Task<dynamic> DeleteRoleAsync(Guid roleId);

    Task<dynamic> EnableRoleAsync(Guid roleId);

    Task<dynamic> DisableRoleAsync(Guid roleId);

    Task<dynamic> AssignMenuToRoleAsync(Guid roleId, Guid menuId);

    Task<dynamic> AssignMenusToRoleAsync(Guid roleId, AssignMenusToRoleDto assignMenusDto);

    Task<dynamic> AssignAllMenusToRoleAsync(Guid roleId);

    Task<dynamic> RemoveMenuFromRoleAsync(Guid roleId, Guid menuId);

    Task<dynamic> GetRoleMenusAsync(Guid roleId);
}